package gra;

import java.util.Random;

/**
 * Klasa zawierajaca talie 52 kart. 
 * Zadania: przechowoywanie tali kart, tasowanie tali.
 */
public class Deck
{
    private Random generator = new Random();
	public  Card[] talia;//Deklaracja tablicy z kartami.
	private Card[] temp;//Tymczasowa tablica z kartami
	private int rozmiar = 52;
	
	public Deck() //Konstruktor klasy.
	{
		talia = new Card[rozmiar];
		temp  = new Card[rozmiar];
		
		for( int i = 0; i < rozmiar; i++ )//Dodawanie kart do tali.
		{
			int value   = ( i % 13 );
			int colour  = ( i/13 );
			try
			{
			    talia[i] = new Card( value, colour );
			}
			catch(ArrayIndexOutOfBoundsException e )
            {
                System.out.println("Wyjscie poza zarkes tablicy.");
            }
			catch(IllegalArgumentException e )
            {
                System.out.println("Blad inicjalizacji klasy Card.");
            }
		}
	}
	
	/**
	 * Metoda tasujaca karty w talii.
	 */
	public void shuffle()
	{
	    for( int i = 0; i < rozmiar; i++ )//Zerowanie tablicy temp.
	    {
	        temp[i] = null;
	    }
	    
	    for( int i = 0; i < rozmiar; i++ )
	    {
	        boolean warunek = true;
	        
	        while( warunek )
	        {
	            int war = generator.nextInt( rozmiar );//Losowanie liczby od 0 do 51.
	            
	            if( temp[war] == null )
	            {
	                temp[war] = talia[i];
	                warunek   = false;
	            }
	        }
	    }
	    
	    System.arraycopy( temp, 0, talia, 0, rozmiar ); //Kopiowanie tablicy.
	}
	
	protected void finalize() throws Throwable
	{
	    super.finalize();
	}

}